<?php
    header("content-type:text/html;charset=utf-8");
    /**分页函数
     * 1、限制limit
     * 2、返回分页的html代码 
     * 3、参数说明
     *      count总条数、page_size每页显示数、$btn_num分页按钮数
     * 4、知识点
     *      1）ceil向上取整
     *      2）isset测试变量是否存在
     *      3）is_numeric判断参数是否是数字 
     * */
    function pageFn($count,$page_size,$btn_num){
        // var_dump($_GET['page']);
        // var_dump(isset($_GET['page']));
        // var_dump(is_numeric($_GET['page']));
        /**页数参数?page验证--若不存在、不为数字、小于1等，都通通设置为1，默认首页 */
        if(!isset($_GET['page']) || !is_numeric($_GET['page']) || $_GET['page']<1 ){
            $_GET['page'] = 1;
        }
        /**page参数最大值，不能超过总页数 */
        $page_num_max = ceil($count/$page_size);
        if($_GET['page']>$page_num_max){
            $_GET['page'] = $page_num_max;//若参数page超过最大值则重置为最大值即可
        }
        /** limit限制页数 */
        $start = ($_GET['page']-1)*$page_size;//开始处
        $limit = "limit {$start},{$page_size}";
        /**按钮显示数判断 */
        $btn_html = "";
        /**传入按钮数 > 总页数 */
        if($btn_num >= $page_num_max){
            //当传入的显示按钮数大于总页数，将所有的页面按钮全部显示出来即可
            for($i=1;$i<=$page_num_max;$i++){
                if($_GET['page'] == $i){
                    $btn_html .= "<span>{$i}</span>";
                }else{
                    $btn_html .= "<a href='?page={$i}'>{$i}</a>";
                }
            }
        }else{
        /**传入按钮数 < 总页数*/
            $num_left = floor(($btn_num-1)/2);//中间和左侧最起始按钮，间隔的按钮数
            $start_btn = $_GET['page']-$num_left;//左侧最起始按钮
            $end_btn = $start_btn+$btn_num-1;//最右侧按钮
            /**限制左侧按钮 */
            if($start_btn < 1){
                $start_btn = 1;
            }
            /**限制右侧按钮 */
            if($end_btn > $page_num_max){
                $start_btn = $page_num_max-($btn_num-1);//更改起始页
            }
            for($i=0;$i<$btn_num;$i++){
                if($_GET['page'] == $start_btn){
                    $btn_html .= "<span>{$start_btn}</span>";
                }else{
                    $btn_html .= "<a href='?page={$start_btn}'>{$start_btn}</a>";
                }
                $start_btn++;
            }
        }
        /**数组data用于存放limit和分页的html模板代码 */
        $data = array(
            'limit'=>$limit,
            'html_page_str'=>$btn_html
        );
        /**返回数组--包含limit和分页html代码 */
        return $data;
    }
    
    /**测试 
    echo '<pre>';
    var_dump(pageFn(100,10,6));//一共100条数据
    */


 























